package pers.xiaojun.boot.security.service;

import lombok.AllArgsConstructor;
import pers.xiaojun.boot.common.biz.system.permission.PermissionApi;
import pers.xiaojun.boot.security.util.SecurityUtils;

/**
 * Security 接口权限控制类
 *
 * @author xiaojun
 * @since 2025-10-10
 */
@AllArgsConstructor
public class SecurityPermission {

    private final PermissionApi permissionApi;

    /**
     * 是否应用指定权限
     *
     * @param permission 权限表示
     * @return
     */
    public boolean hasPermission(String permission) {
        return permissionApi.hasAnyPermissions(SecurityUtils.getUserId(), permission);
    }


    /**
     * 是否拥有指定权限
     *
     * @param permissions 权限标识数组
     * @return 是否拥有
     */
    public boolean hasAnyPermissions(String... permissions) {
        return permissionApi.hasAnyPermissions(SecurityUtils.getUserId(), permissions);
    }

    /**
     * 是否拥有指定角色
     *
     * @param role 角色代码
     * @return 是否应用
     */
    public boolean hasAnyRole(String role) {
        return permissionApi.hasAnyRoles(SecurityUtils.getUserId(), role);
    }

    /**
     * 是否有指定角色
     *
     * @param roles 角色代码数组
     * @return 是否拥有
     */
    public boolean hasAnyRoles(String... roles) {
        return permissionApi.hasAnyRoles(SecurityUtils.getUserId(), roles);
    }


    /**
     * 是否有指定授权范围
     *
     * @param scopes 授权范围
     * @return 是否拥有
     */
    public boolean hasAnyScopes(String... scopes) {
        return SecurityUtils.hasAnyScopes(scopes);
    }


}
